<?php
/**
 * 框架接口文件
 * @copyright Copyright&copy; 2015, 广州六象元一网络科技有限公司
 * @author 王海龙 $
 * @version  $Id: init.php, v 1.0, 2015-01-01 王海龙 $
 */
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache");
/* 如果非鸡蛋美术标识，则报错 */
if (!defined('EGGMS') || $_SERVER['HTTP_X_FORWARDED_FOR'] != '113.119.143.224')
{
    die('非法进入');
}
// /*是否为手机端*/
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
$uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile)/i";
if ((preg_match($uachar, $ua)) && !strpos(strtolower($_SERVER['REQUEST_URI']),'wap'))
{
    $isMobile = true;
}
// 销毁变量
unset($ua,$uachar);

if (__FILE__ == '')
{
    die('Fatal error code: 0');
}

/* 取得当前根目录 */
define('ROOT', '/lanmp/www/eggms/');
define('FW', '/lanmp/www/eggms/framework/');
error_reporting(E_ALL);
/* 初始化设置 */
@ini_set('memory_limit',          '128M'); // 设定脚本所能占用最大的内存
@ini_set('session.cache_expire',  1440); // 设置
@ini_set('session.use_trans_sid', 0); // 是否使用明码在URL中显示SID(会话ID)
@ini_set('session.use_cookies',   1); // 是否使用cookie在客户端保存会话ID
@ini_set('session.auto_start',    0); // 在客户访问任何页面时都自动初始化会话，默认禁止。
@ini_set('display_errors',        true); // 是否将错误信息作为输出的一部分显示

/* 设置包含目录路径 */
if (DIRECTORY_SEPARATOR == '\\')
{
    @ini_set('include_path', '.;' . APP_PATH);
}
else
{
    @ini_set('include_path', '.:' . APP_PATH);
}

/* 加载配置文件 */
// 加载默认配置文件
require(ROOT . 'conf/config.php');
// 加载商店文件
require(ROOT . 'conf/shop.php');
// 加载用户指定配置文件
if (defined('CONF')) {
    @require(ROOT . 'conf/' . APP_NAME . '.php');
}
/* 加载基础函数库 */
require(FW . 'flib/funBase.php'); // 基础函数
require(FW . 'flib/funCommon.php'); // 基础函数
require(FW . 'flib/funInsert.php'); // 基础函数

/* 调试运行时间记录开始 */
if (DEBUG == 2) {
    /* 当程序执行完成后执行shutdownFun函数 */
    register_shutdown_function('shutdownFun');
    // 设置运行开始时间
    define('TIMESTART', microsecond());
}

/* 实例化memcached类 */
if (!empty($_CFG['memcachedServer'])) {
    $mem = new memcached();
    // 检测是否有密码验证
    if (!empty($_CFG['memcachedServer'][2]) && !empty($_CFG['memcachedServer'][3]))
    {
        // 使用binary二进制协议
        $mem->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
        // 添加服务池
        $mem->addServer($_CFG['memcachedServer'][0], $_CFG['memcachedServer'][1]);
        // 进行密码验证
        $mem->setSaslAuthData($_CFG['memcachedServer'][2],$_CFG['memcachedServer'][3]);
    } else {
        // 添加服务池
        $mem->addServer($_CFG['memcachedServer'][0],$_CFG['memcachedServer'][1]) ;
    }
    $memStats = $mem->getStats();
}

/* 加载实例化数据库类 */
if (!empty($_CFG['dbHost']) && !empty($_CFG['dbUser']) && !empty($_CFG['dbPass']) && !empty($_CFG['dbName']) && !empty($_CFG['charset'])) {
    // 加载mysqli类文件
    require(FW . 'clib/classMysql.php');
    if (!empty($_CFG['dbType']) && $_CFG['dbType'] == 'mysqli') {
        $db = new classMysqli($_CFG['dbHost'], $_CFG['dbUser'], $_CFG['dbPass'], $_CFG['dbName'],$_CFG['charset'],$_CFG['prefix'], 0, $_CFG['dbRead']);
    }
    // 设置数据表缓存时间
    $db->setMaxCacheTime($_CFG['dbCacheTime']);
    // 清空数据库配置
    $_CFG['dbArr'] = $_CFG['dbHost'] = $_CFG['dbUser'] = $_CFG['dbPass'] = $_CFG['dbName'] = NULL;
} else {
    die('No DBConfig In Config File');
}

/* 加载session类操作 */
// 保存在memcached
if (!empty($mem) && !empty($_CFG['sessionToMemcached'])) {
    // 包含类文件
    require(FW . 'clib/classSessionToMemcached.php');
    // 实例化sess类
    $sess = new classSessionToMemcached('EGGMS', $_CFG['sessionCacheTime']);
    // 设置过期时间
    $sess->maxLifeTime = $_CFG['sessionCacheTime'];
    // 生成sessionID
    define('SESS_ID', $sess->getSessionId());
}
// 保存在db数据库里
elseif (!empty($_CFG['sessionToDb'])) {
    // 包含类文件
    require(FW . 'clib/classSessionToDb.php');
    // 实例化sess类
    $sess = new classSessionToDb($db, table('sessions'), table('sessionsData'), 'EGGMS', $_CFG['sessionCacheTime']);
    // 生成sessionID
    define('SESS_ID', $sess->getSessionId());
}
// 以文件形式保存
else {
    /* 设置SESSION保存站点 */
    ini_set("session.cookie_domain", ".eggms.com");
    /* 设置过期时间 */
    ini_set("session.gc_maxlifetime", $_CFG['sessionCacheTime']);
    /* 开启SESSION */
    session_start();
    /* 设置SESS_ID */
    define('SESS_ID', session_id());
    // // 设置session文件保存目录
    // ini_set('session.save_path', ROOT.'data/cache/session/');
    // // 设置session文件命名方式
    // ini_set('session.name', $_CFG['sessionName']);
    // // 设置过期时间
    // ini_set('session.gc_maxlifetime', $_CFG['sessionCacheTime']);
    // // 开启session机制
    // session_start();
    // 生成sessionID
    //define('SESS_ID', session_id());
}
// 验证session是否正确开启
if (!defined('SESS_ID')) {
    die("Can't Start Session");
} else {
    /* 设置sess初始变量 */
    $_SESSION['userId'] = 0;
    $_SESSION['userName'] = '';
    $_SESSION['cartNum'] = 0;
}

// 设置访问者IP
if (empty($_SESSION['realIp'])) $_SESSION['realIp'] = realIp();

/* 加载模板引擎类 */
require(FW . 'clib/classTpl.php');
$tpl = new classTpl();
// 用cacheLifeTime来判断缓存文件是否过期。
// $tpl->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
// 禁用模板缓存
$tpl->setCaching(false);
// 设置模板目录
$tpl->setTemplateDir(ROOT . $_CFG['templateDir']);
// 设置模板缓存编译目录
$tpl->setCompileDir(ROOT . $_CFG['cacheDir'].$_CFG['templateDir'].'c/');
// 设置模板缓存目录
$tpl->setCacheDir(ROOT . $_CFG['cacheDir'] . $_CFG['templateDir']);
// 设置缓存过期时间
$tpl->setCacheLifetime(ROOT . $_CFG['cacheLifeTime']);
// 设置调试模式
$tpl->debugging = false;
/* 加载json处理类库 默认不加载，需要时才加载 */
// require(FW . 'clib/classJson.php');
// $json = new classJson();


/* 对用户传入的变量进行转义操作。*/
if (!get_magic_quotes_gpc())
{
    if (!empty($_GET))
    {
        $_GET  = addslashesDeep($_GET); // 转义GET数组
    }
    if (!empty($_POST))
    {
        $_POST = addslashesDeep($_POST); // 转义POST数组
    }

    $_COOKIE   = addslashesDeep($_COOKIE); // 转义COOKIE数组
    $_REQUEST  = addslashesDeep($_REQUEST); // 转义REQUEST数组
}
